home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / PLUS4 / plus4disk2.d64 / ch3.03 music next >
Text File  |  2009-01-03  |  11KB  |  133 lines

  1. Ç*NB"1:CH3.03  MUSIC"
  2. Ç*SP0:LM8:RM62:PP66:PG59
  3. Ç*VP3:HL8:HR72:HD0:├16/+4: ╘╔╬┘ ═╒╙╔├    ÇúÇúÇúÇúÇúÇúÇúÇúÇúÇúÇúÇúÇúÇú,,╙ECTION XX
  4. Ç*HS2:------------------------------------,,----------
  5. Ç*FT0:-----------------------,,----------
  6. Ç*FS3:(C) 1984 ┼LIZABETH ─EAL,,         Ç#
  7. ╙ECTION
  8. Ç*LN2:CN1;╘╔╬┘ ═╒╙╔├Ç*LN2:CN0
  9.      ╘HE SOUNDMAKER IN THIS COMPUTER HAS TWO VOICES. ╧NE OF THE VOICES CAN BE MADE TO PRODUCE TONES. ╘HE OTHER ONE, TONES OR NOISE. ╙O YOU CAN PLAY SIMPLE MUSIC IN TWO VOICES, IF YOU WISH. ┴ND WHILE YOU DO IT, YOU CAN LEARN A LITTLE ABOUT READING ─┴╘┴ ON THE FLY AND DEBUGGING PROGRAMS CONTAINING LARGE AMOUNTS OF ─┴╘┴.
  10.  
  11.      ╘O CODE SIMPLE MUSIC, YOU NEED TO TRANSCRIBE THE NOTES YOU SEE ON THE STAFF INTO NUMBERS THE COMPUTER UNDERSTANDS. ╘HE COMPUTER NEEDS JUST THREE PIECES OF INFORMATION: WHICH VOICE, WHAT VALUE TO PLAY AND FOR HOW LONG. ╘HERE ARE SEVERAL SOUNDMAKING PROGRAMS IN THE MANUAL. ╔F YOU TYPE THEM IN, YOU'LL SEE HOW IT IS DONE.
  12.  
  13.      ╙ONGS ARE USUALLY ENCODED IN ─┴╘┴ LINES. ╘HEY ARE TRANSCRIBED FROM A MUSICAL SCORE TO SOME SET OF NUMBERS A COMPUTER CAN HANDLE. ╘HE VALUES IN ─┴╘┴ LINES IN THE MANUAL ARE SOUND-REGISTER VALUES AND NOTE DURATIONS. ┘OU CAN CODE SONGS IN ANY WAY YOU WISH, SO LONG AS ┘╧╒╥ PROGRAM DECODES ┘╧╒╥ METHOD. ╙OME PEOPLE CODE SONGS USING NOTE NUMBERS INSTEAD OF FIXED REGISTER VALUES. ╘HIS ALLOWS MORE FLEXIBILITY, SUCH AS BEING ABLE TO TUNE OR MOVE THE NOTE TRANSCRIPTIONS FROM ONE COMPUTER TO ANOTHER.
  14.   
  15. Ç*CN1;--- ═┴╦╔╬╟ ┴ ╬╧╘┼ ├╚┴╥╘ ---Ç*CN0
  16.  
  17.      ╨ROGRAM ╬╧╘┼ ├╚┴╥╘ GIVES YOU THE BEST OF BOTH WORLDS - IT PRINTS (SCREEN OR PRINTER) THE NOTE NAMES IN 5 OCTAVES, THEIR ACTUAL SOUND FREQUENCIES, THE NOTE NUMBER AND THE SOUND REGISTER VALUE. ╘HIS IS AN EXERPT OF THE OUTPUT:
  18.  
  19. // PIC: NOTE CH //
  20.  
  21.      ╘HE PROGRAM SUPPLEMENTS THE MANUAL, WHICH MAY OR MAY NOT, DEPENDING ON THE VERSION, HAVE ALL THE NEEDED NOTES.
  22.  
  23. // PRG: NOTE CHART //
  24.  
  25. Ç*FP12
  26. *** ╓┴╥╔┴┬╠┼╙  ***
  27.  
  28. ─╓    DEVICE FOR PRINTING THE CHART,
  29.       SCREEN OR PRINTER
  30. ╬╬$   A LIST OF 12 NOTES IN A SCALE
  31. ┴, ├ AND ╞ USED TO COMPUTE THE BASE VALUE
  32. ╩     OCTAVES NUMBERED 3 TO 7 (OTHERS SOUND
  33.       HORRIBLE, SO ARE EXCLUDED)
  34. ╙╥    CALCULATED REGISTER VALUE FOR A NOTE
  35. ╬%()  A TABLE OF NOTES HOLDS ╙╥ VALUES
  36. ╦     12 NOTE NUMBERS 0-11 PER OCTAVE
  37. ┬$    SIX SPACES USED FOR FORMATTING THE NUMBERS
  38.  
  39. ***  ╔╬╙╘╥╒├╘╔╧╬╙  ***
  40.  
  41.      ═AKE SURE TO TYPE ╨╥╔╬╘#1 WITH NO SPACES AND THAT ALL SEMICOLONS ARE IN PLACE, THEY ARE ALWAYS EASY TO MISS.  ╙ET ╨ IN LINE 9000 TO 1 FOR PRINTING TO OCCUR. ╠ATER, WHEN YOU MAY WISH TO SUPRESS PRINTING, YOU CAN CHANGE IT TO ZERO. ╙ET ─╓ IN THE SAME LINE TO 3 FOR PRINTING TO THE SCREEN. ╫HEN EVERYTHING WORKS ╧╦, YOU CAN CHANGE ─╓ TO 4, TO PUT OUT THE LIST ON THE PRINTER TO BE USED AS A CODING SHEET.
  42.  
  43.      ╘URN UP THE SPEAKER OF THE ╘╓ OR MONITOR TO HEAR THE SOUNDS AS THEY ARE BEING DEVELOPED. ╘HE PROGRAM PAUSES AT THE END OF EACH OCTAVE (12 NOTES), PUSH ANY KEY TO CONTINUE.
  44.  
  45. ***  ─┼╘┴╔╠╙  ***
  46.  
  47.      ╔F YOU DECIDE TO CODE THE SONGS BY THEIR NOTE NUMBER, YOU CAN PLAY ANY NOTE BY CODING:
  48.  
  49. ╙╧╒╬─ 1,╬%(NOTE NUMBER),DURATION
  50.  
  51.      ╔F YOU DECIDE THAT YOU PREFER TO GIVE THE COMPUTER ITS NATIVE VALUES, THE ONES LISTED IN THE ╙╥ (SOUND REGISTER) COLUMN, THEN USE THEM DIRECTLY AS IS NOW DONE IN LINE 9070 AND IN THE MANUAL THAT CAME WITH THE COMPUTER. ┬ELOW YOU WILL SEE THE FIRST METHOD, AS ╔ PREFER IT.
  52.  
  53. Ç*CN1;--- ╨╠┴┘╔╬╟ ╘┼╙╘ ═╒╙╔├ ---Ç*CN0
  54.  
  55.      ┴LL WE NOW HAVE TO DO IS TO PUT A SONG-PLAYER TOGETHER WITH THIS ROUTINE. ╠ET'S DO IT. ─O NOT ERASE THE PREVIOUS PROGRAM. ╥ETAIN THE LINES THAT WE NEED. ╒SE THE ╥┼╬╒═┬┼╥ COMMAND TO MAKE THE LINE NUMBERS IN THE 300-RANGE. ╘YPE IN THE NEW CODE YOU SEE IN LINES 310-390 BELOW. ╘HE REASON FOR THE SLIGHT CHANGE, IS THAT IT TAKES A BIT OF TIME TO DEVELOP THE NOTE TABLE. ╙O INSTEAD OF WASTING TIME BUILDING ONE EVERY TIME WE ╥╒╬ A PROGRAM, WE WILL ╨╧╦┼ THE TABLE INTO A SAFE PLACE IN COMPUTER'S MEMORY AND USE IT FROM THERE WHEN WE DEBUG REAL MUSIC PROGRAMS.
  56.  
  57.      ╔NCIDENTALLY, THE MANUAL CONTAINS A FAIRLY SIMPLE, BUT RATHER INFLEXIBLE, SCHEME OF CODING SONGS. ┘OU CAN USE THEM JUST FINE. ╫HAT FOLLOWS IS A BIT MORE ELABORATE, BUT IT HAS AN ADVANTAGE OF BEING EASY TO DEBUG AND PERMITS MUCH GREATER FLEXIBILITY IN CODING SONGS ON THIS OR ANY OTHER COMPUTER. ╔T WOULD BE A GOOD IDEA FOR YOU TO PLAY WITH A SONG OR TWO IN THE MANUAL TO SEE HOW IT'S DONE. ╘HE MATERIAL BELOW EXPANDS ON WHAT YOU LEARN FROM THE MANUAL.
  58.  
  59. // PRG: PLAY MUSIC --- LINES 100-1090 //
  60.  
  61.      ╘HIS PROGRAM HAS THREE SECTIONS: THE PLAYER IS UP FRONT, FOLLOWED BY THE NOTE CHART ROUTINE YOU ALREADY KNOW, THIS IS FOLLOWED BY TEST DATA WHICH PLAYS ┼-MINOR CHORD IN TWO VOICES. ╘HESE VARIABLES PERTAIN TO THE PLAYER:
  62.  
  63. Ç*FP16
  64. ***  ╓┴╥╔┴┬╠┼╙  ***
  65.  
  66. ┴─   ┴DDRESS OF THE NOTE TABLE
  67. ╘    NOTE DURATION
  68. ╓    VOLUME FOR THAT NOTE
  69. ╬    NOTE NUMBER
  70. ╦    VOICE NUMBER
  71. ╘╔ AND ╘╪ ARE TIMING VARIABLES USED 
  72.      IN ADDITION TO ╘
  73. ╙    OVERALL SPEED
  74. ╨    PART NUMBER (SONGS CAN BE DIVIDED
  75.      INTO SMALL PARTS FOR REPETITIONS)
  76. ─╠   ─┴╘┴ LINE NUMBER WHERE EACH 
  77.      PART BEGINS
  78. ┼╥   COMPUTER'S ERROR LOG, WE USE IT TO
  79.      PRINT MESSAGES WHILE DEBUGGING
  80.  
  81. ***  ╔╬╙╘╥╒├╘╔╧╬╙  ***
  82.  
  83.      ╘HE ─┴╘┴ IN LINES 1010-1080 IS A PATTERN TO USE IN ALL SONGS. ╫HEN YOU TYPE THE ─┴╘┴ LINES, MAKE SURE TO ╬╧╘ INSERT OR MISS ANY COMMAS. ╘HE LAST ─┴╘┴ VALUE MUST BE ZERO FOR THE SONG TO STOP. ╘HE FIRST DATA LINE IN ANY SONG CONTAINS NUMBERS OF ─┴╘┴ LINES WHERE PARTS OR SEGMENTS BEGIN. ╔N THE TEST EXAMPLE, WE PLAN TO PLAY THE SONG FROM ─┴╘┴ IN LINE 1030-ON, TWICE. ┌ERO TERMINATES THE GROUPINGS.
  84.  
  85.      ╫HEN YOU ╥╒╬ THE PROGRAM, IT WILL "TUNE" THE NOTES FIRST, YOU'LL HEAR A QUICK SWEEP OF ALL THE NOTES. ╘HEN THE TEST CHORD WILL PLAY TWICE AND THE COMPUTER WILL SAY ╥┼┴─┘. ╔N THE EVENT OF ANY ERRORS, THE SOUND MAY BE HORRIBLE, BUT IT WILL TURN OFF BY ITSELF. ╘HE COMPUTER THEN WILL REPORT AN ERROR. ┘OU CAN FIX THE PROGRAM UNTIL IT WORKS ╧╦. ─O NOT GO FURTHER UNTIL EVERYTHING WORKS ON THE TEST ─┴╘┴.
  86.  
  87. Ç*CN1;--- ╨╠┴┘╔╬╟ ╙╧╬╟╙ ---Ç*CN0
  88.  
  89.      ┴FTER A SUCCESSFUL ╥╒╬ WITH THE TEST DATA, YOU CAN TYPE IN A REAL SONG DATA. ┘OU DO NOT HAVE TO TYPE A WHOLE SONG IN ONE (TEDIOUS) SITTING. ┼NTER AS MANY DATA LINES AS YOU CAN, TERMINATE THE WHOLE THING WITH A ZERO VALUE, AND YOU CAN PLAY JUST A LITTLE BIT.
  90.  
  91.      ╘HERE ARE TWO SONGS PROVIDED; AN 18TH CENTURY GUITAR ╨╥┼╠╒─┼ AND A LOVELY, POPULAR, CHILDREN'S SONG ╙╔╬╟ ┴ ╙╧╬╟ ╧╞ ╙╔╪╨┼╬├┼. ╘YPE EITHER ONE AND TELL THE COMPUTER WHERE IT ALL STARTS BY CHANGING THE ╥┼╙╘╧╥┼ STATEMENT IN LINE 150. ╙O IF YOU PLAN TO PLAY THE ╙╧╬╟ ╧╞ ╙╔╪╨┼╬├┼, LINE 150 SHOULD CONTAIN ╥┼╙╘╧╥┼ 3010, AS THAT IS OUR FIRST DATA LINE IN THE SONG.
  92.  
  93.      ╫ARNING: ╥┼╬╒═┬┼╥ING THE ─┴╘┴ LINES, UNFORTUNATELY, WILL CAUSE A MIXUP. ╘HE ╥┼╙╘╧╥┼ COMMAND WILL BE ╥┼╬╒═┬┼╥ED CORRECTLY, BUT THE NUMBERS THAT INDICATE SEGMENT PARTS WHICH ARE IN THE SONG'S FIRST ─┴╘┴ LINE WILL BE WRONG. ┴DJUST THEM MANUALLY, WHEN NECESSARY. ╘HIS IS A NUISANCE, BUT NOT A SERIOUS PROBLEM. ┘OUR EARS WILL TELL YOU WHEN THINGS ARE WRONG, AND THE FIRST SUSPECT SHOULD BE THE SEGMENT LINE NUMBERS.
  94.  
  95. ***  ─┼╘┴╔╠╙  ***
  96.  
  97.      ╔N LINE 120 WE HAVE A ╘╥┴╨ STATEMENT. ╘HIS "TRAPS" THE CODING ERRORS. ╧FTEN IF YOU MESS UP ON DATA ENTRY, THE SOUND MAY WANT TO GO ON FOR A LONG TIME. ╘╥┴╨ PERMITS US TO USE THE ╙╘╧╨ KEY, OR CERTAINLY TERMINATE THE SOUND EARLY.
  98.  
  99.      ╔N THE SAME LINE, ┴─ TELLS THE COMPUTER WHERE THE NOTE CHART IS. ╔F CERTAIN VALUES ARE FOUND IN MEMORY WHEN YOU SAY ╥╒╬, THE MAKING OF THE CHART IS SKIPPED TO SAVE YOU TIME. ╙O IF BETWEEN RUNS, YOU DO NOT USE THE TAPE, YOU WILL NOT HAVE TO WAIT FOR THE CALCULATIONS.
  100.  
  101.      ╠INES 150-270 ARE OUR MAIN SONG LOOP. ╘HE PROGRAM READS THE FIRST DATA ITEM IN THE LIST, REDIRECTS THE ╥┼┴─ ROUTINE TO THE LINE NUMBER OF THE SEGMENT, AND REPEATS THE PROCESS UNTIL IT FINDS A ZERO. ╞OR INSTANCE, IN THE ╙╔╪╨┼╬├┼ SONG, THIS LOOP WILL RUN FOUR TIMES, SINCE WE HAVE FOUR DATA ITEMS IN THE FIRST ─┴╘┴ LINE OF THE SONG. ╘HE SEGMENTS WILL PLAY IN ORDER: LINE 3020 TO THAT ZERO IN LINE 3170, THEN LINE 3180-3300, REPEAT 3020-3170, AND FINALLY, 3310 TO THE END. ╚AVING THIS SORT OF SETUP HAS SAVED US SOME CODING: SINCE MEASURES 5 AND 6 OF THE SONG ARE THE SAME NOTES AS MEASURES 1 AND 2, WE CODED 1 AND 2 ONCE, AND TOLD THE COMPUTER TO PLAY THEM AT THE TIME WHEN 5 AND 6 WERE NEEDED.
  102.  
  103.      ╧NCE THE COMPUTER HAS ZEROED IN ON THE ─┴╘┴ TO USE, THE INNER LOOP TAKES OVER, FOR PLAYING THE INDIVIDUAL NOTES. ╘HE LOOP SPANS LINES 190-260.  ╚ERE THE MEANING OF THE ─┴╘┴ LINES IS AS FOLLOWS: THE FIRST VALUE IS THE DURATION, (SEGMENT ENDS WHEN IT IS  ZERO), VOLUME LEVEL, NOTE NUMBER FOR VOICE ONE AND NOTE NUMBER FOR VOICE TWO. ╔F ANY NOTE VALUE IS NEGATIVE, WE HOLD THE NOTE (SUSTAIN THE LAST POSITIVE VALUE, WHILE THE OTHER VOICE IS PLAYING). ╧THERWISE WE PICK UP ITS CORRESPONDING SOUND REGISTER VALUE AND PLAY IT, OR KILL THE SOUND ALTOGETHER IF THE VALUE IS ZERO. ╘HE DURATION GIVEN TO THE ╙╧╒╬─ COMMAND IS ARTIFICIAL, A BIG VALUE OF 400. ╘HIS IS ON PURPOSE. ╔T IS DIFFICULT TO SYNCHRONIZE ┬┴╙╔├ EXECUTION TIMING WITH THE NOTE DURATIONS, THINGS DON'T COME OUT EVEN ENOUGH IN ┬┴╙╔├. ╙O WE HANDLE THE DURATION OURSELVES IN LINE 250 INSTEAD.
  104.  
  105. ***  ╨╥╧╩┼├╘╙  ***
  106.  
  107.      ╔T'S ENOUGH OF A PROJECT TO ENCODE SONGS INTO ─┴╘┴ LINES! ┘OU CAN TRY YOUR HAND AT DOING JUST THAT. ╔F YOU FOLLOW THE ╙╔╪╨┼╬├┼ SCORE, YOU WILL SEE THE CODING METHOD. ╘HE CODING DETAILS WEREN'T COVERED IN THE ─┼╘┴╔╠╙ SECTIONS, AS THEY MAY BE A BIT OBSCURE IF YOU HAVE NO INTEREST IN ENTERING YOUR SONGS. ╚ERE ARE SOME MORE DETAILS THAT ARE RELEVANT TO TRANSCRIBING SONGS:
  108.  
  109.      ╬OTE THAT THERE ARE MORE ─┴╘┴ LINES THAN NOTES IN THE SONG. ╘HE REASON IS TWO-FOLD. ╞IRSTLY, IF VOICE ONE IS PLAYING A QUARTER NOTE, FOR INSTANCE, AND AT THE SAME TIME, VOICE TWO IS PLAYING TWO EIGHTH-NOTES, THIS COUNTS AS TWO EVENTS. ╙ECONDLY, ╘┼─ CHIP IS FAIRLY PRIMITIVE IN ITS MUSICAL ABILITIES, SO TO BREAK UP THE MONOTONY, YOU CAN IMPROVISE THE TIMING A LITTLE BIT AND YOU CAN ADD SHORT BREAKS WHEN NOTHING PLAYS AT ALL, AS YOU CAN SEE IN LINE 3170 FOR INSTANCE.  ╙OMETIMES, IF IT FITS, A CHORD MADE OF MORE THAN TWO NOTES CAN BE MADE INTO AN ARPEGGIO, A MUSICAL TERM WHICH MEANS SWEEPING FROM ONE NOTE TO ANOTHER, QUICKY,  IN SUCH A WAY THAT ALL THE NOTES ARE FINISHED IN THE SAME AMOUNT OF TIME THAT THE CHORD WAS SET FOR. ┘OU CAN SEE THIS TYPE OF CODING IN SEVERAL PLACES IN THE ╨╥┼╠╒─┼. ╘HE ╥┼═ LINES, IN ADDITION TO SHOWING WHICH MEASURE IS CODED, INDICATE PLACES WHERE THE NOTES AREN'T HANDLED EXACTLY AS SHOWN IN THE SCORE.
  110.  
  111.      ╙O ANY PROJECTS CAN INVOLVE YOUR IMPROVISATIONS TO MAKE THE BEST OF RATHER POOR SOUND CAPABILITY. ╘HE SCHEME SHOWN IN THIS SECTION IS USABLE, BUT BY NO MEANS A LAST WORD. ╘HERE IS NO LIMIT TO HOW ELABORATE THE METHOD CAN BE; HAPPY INVENTING!
  112.  
  113. ***  ╘╫╧ ╙╧╬╟╙  ***
  114.  
  115.      ╘HE ─┴╘┴ LINES IN THIS SECTION ARE THE SONGS TO BE ATTACHED TO THE PROGRAM LISTED ABOVE.
  116.  
  117. // COPY OF THE SCORE //
  118.  
  119. // PRG: PLAY MUSIC --- DATA LINES 2000-2720 //
  120.  
  121. // SIXPENCE SCORE AND WORDS //
  122.  
  123. // PRG: PLAY MUSIC --- DATA LINES 2730-3470 //
  124.  
  125.      ╘HE WORDS TO THE SONG DELIGHT MANY CHILDREN. ╘HE SECOND VERSE IS:
  126.  
  127. ╘HE ╦ING WAS IN HIS COUNTING HOUSE, COUNTING OUT HIS MONEY,
  128. ╘HE ╤UEEN WAS IN THE PARLOUR, EATING BREAD AND HONEY,
  129. ╘HE MAID WAS IN THE GARDEN, HANGING OUT THE CLOTHES,
  130. ┴LONG CAME A BLACKBIRD, AND NIPPED OFF HER NOSE.
  131.  
  132.      ┴PPARENTLY THERE IS A THIRD VERSE ABOUT PUTTING THE NOSE BACK ON AGAIN, BUT THE VERSE ISN'T EASY TO FIND.
  133.